#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
练习题系统演示脚本

这个脚本演示如何使用练习题系统进行学习和测试。
"""

import os
import sys
import subprocess
from pathlib import Path

def print_banner():
    """打印欢迎横幅"""
    print("="*60)
    print("🐍 Python学习练习题集演示")
    print("="*60)
    print()

def show_directory_structure():
    """显示目录结构"""
    print("📁 目录结构:")
    print("""
    practice_exercises/
    ├── 📖 README.md                    # 完整使用指南
    ├── 🟢 level_01_basics/             # 初级练习 (1-20题)
    ├── 🟡 level_02_intermediate/       # 中级练习 (21-40题)
    ├── 🟠 level_03_advanced/           # 高级练习 (41-60题)
    ├── 🔴 level_04_expert/             # 专家级练习 (61-80题)
    ├── ✅ solutions/                   # 完整解答
    ├── 🧪 test_exercises.py            # 自动化测试
    └── 🎯 demo.py                      # 本演示脚本
    """)
    print()

def show_sample_exercise():
    """显示示例练习题"""
    print("📝 示例练习题 - 变量交换:")
    print("""
    题目: 实现4种不同的变量交换方法
    
    def swap_with_temp(a, b):
        # TODO: 使用临时变量交换a和b
        pass
    
    def swap_with_tuple(a, b):
        # TODO: 使用元组解包交换a和b
        pass
    
    def swap_with_arithmetic(a, b):
        # TODO: 使用算术运算交换a和b (仅适用于数字)
        pass
    
    def swap_with_xor(a, b):
        # TODO: 使用异或运算交换a和b (仅适用于整数)
        pass
    """)
    print()

def run_sample_test():
    """运行示例测试"""
    print("🧪 运行示例测试:")
    try:
        result = subprocess.run(
            [sys.executable, "test_exercises.py", "--level", "1", "--exercise", "1"],
            cwd=Path(__file__).parent,
            capture_output=True,
            text=True,
            timeout=30
        )
        
        if result.returncode == 0:
            print("✅ 测试通过!")
            # 显示部分输出
            lines = result.stdout.split('\n')
            for line in lines[-10:]:
                if line.strip():
                    print(f"   {line}")
        else:
            print("❌ 测试失败")
            print(f"   错误: {result.stderr}")
            
    except subprocess.TimeoutExpired:
        print("⏰ 测试超时")
    except Exception as e:
        print(f"❌ 运行测试时出错: {e}")
    
    print()

def show_learning_path():
    """显示学习路径"""
    print("🗺️ 建议学习路径:")
    print("""
    1. 🟢 Level 1 (1-2周): 掌握Python基础语法
       - 变量、数据类型、控制流
       - 函数、模块、异常处理
       - 文件操作、字符串处理
    
    2. 🟡 Level 2 (2-3周): 理解高级语法特性
       - 面向对象编程、装饰器
       - 生成器、迭代器、上下文管理器
       - 正则表达式、数据结构
    
    3. 🟠 Level 3 (3-4周): 掌握复杂项目开发
       - 元编程、设计模式
       - 并发编程、性能优化
       - 网络编程、数据库操作
    
    4. 🔴 Level 4 (4-6周): 具备架构设计能力
       - 框架设计、架构模式
       - 分布式系统、微服务
       - 安全编程、测试驱动开发
    """)
    print()

def show_commands():
    """显示常用命令"""
    print("⚡ 常用命令:")
    print("""
    # 查看所有练习题
    python test_exercises.py
    
    # 测试特定级别
    python test_exercises.py --level 1
    
    # 测试特定练习
    python test_exercises.py --level 1 --exercise 1
    
    # 性能基准测试
    python test_exercises.py --benchmark
    
    # 代码质量检查
    python test_exercises.py --quality
    
    # 查看练习题内容
    cat level_01_basics/exercise_01_variable_swap.py
    
    # 查看标准答案
    cat solutions/level_01_basics/solution_01_variable_swap.py
    """)
    print()

def show_tips():
    """显示学习技巧"""
    print("💡 学习技巧:")
    print("""
    ✨ 先思考再编码: 理解题目要求，设计解决方案
    ✨ 多种解法: 尝试用不同方法解决同一问题
    ✨ 性能优化: 关注时间和空间复杂度
    ✨ 代码质量: 注重代码可读性和可维护性
    ✨ 举一反三: 思考每个练习的变种和扩展
    ✨ 代码复用: 在后续练习中应用前面学到的技巧
    """)
    print()

def main():
    """主函数"""
    print_banner()
    show_directory_structure()
    show_sample_exercise()
    run_sample_test()
    show_learning_path()
    show_commands()
    show_tips()
    
    print("🚀 开始你的Python学习之旅吧!")
    print("💪 记住: 编程是一门实践的艺术，只有通过大量练习才能真正掌握!")
    print("="*60)

if __name__ == "__main__":
    main()
